package com.stt.videoprocess.design.state;

import com.stt.videoprocess.design.model.VideoTask;

/**
 * 视频处理状态接口（状态模式）
 * 定义状态转换规则和行为
 */
public interface VideoProcessingState {
    /**
     * 处理视频任务的方法
     *
     * @param task 视频任务对象，包含需要处理的视频信息和任务元数据
     */
    void handle(VideoTask task);

    /**
     * 开始处理视频任务的方法
     *
     * @param task 视频任务对象，表示即将开始处理的任务
     */
    VideoProcessingState startProcessing(VideoTask task);

    /**
     * 暂停处理视频任务的方法
     *
     * @param task 视频任务对象，表示需要暂停处理的任务
     */
     VideoProcessingState pauseProcessing(VideoTask task);

    /**
     * 恢复处理视频任务的方法
     *
     * @param task 视频任务对象，表示需要恢复处理的任务
     */
     VideoProcessingState resumeProcessing(VideoTask task);

    /**
     * 完成处理视频任务的方法
     *
     * @param task 视频任务对象，表示已经完成处理的任务
     */
     VideoProcessingState completeProcessing(VideoTask task);

    /**
     * 处理视频任务失败的方法
     *
     * @param task 视频任务对象，表示处理失败的任务
     * @param error 错误信息，描述任务处理失败的原因
     */
     VideoProcessingState failProcessing(VideoTask task, String error);

}